package com.xbongbong.saas.enums;

import com.xbongbong.i18n.util.I18nMessageUtil;
import lombok.Getter;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * @author yanglei
 * @Description: 高级公海模式 - 公海分组的固定分组
 * @date 222/4/19 15:24
 */
@Getter
public enum SeniorFixedGroupEnum {
    /**
     * 全部客户分组
     */
    ALL_CUSTOMER_GROUP("全部客户", 0L),
    /**
     * 全部线索分组
     */
    ALL_CLUE_GROUP("全部线索", -1L),
    /**
     * 当前分组
     */
    CURRENT_GROUP("当前", -2L),

    /**
     * 上级分组
     */
    PREVIOUS_GROUP("上级", -3L),

    /**
     * 指定分组
     */
    APPOINT_GROUP("指定", -4L),

    /**
     * 无分组客户
     */
    NO_GROUP_CUSTOMER("无分组客户", -5L),
    /**
     * 无分组线索
     */
    NO_GROUP_CLUE("无分组线索", -6L),



    ;

    /**
     * 枚举信息--中文名称
     */
    private final Long id;

    /**
     * 枚举值 --
     */
    private final String label;




    /**
     * 构造一个<code>SubModuleEnum</code>枚举对象
     *
     * @param label 枚举名
     * @param id  枚举值
     */
    SeniorFixedGroupEnum(String label, Long id) {
        this.label = label;
        this.id = id;
    }

    public static String getLabelById(Long id) {
        for (SeniorFixedGroupEnum cacheCode : values()) {
            if (Objects.equals(id, cacheCode.getId())) {
                return cacheCode.getLabel();
            }
        }
        return "";
    }
    /**
     * 获取全部枚举
     *
     * @return List<PublicCustomerRuleEnum>
     */
    public static List<SeniorFixedGroupEnum> getAllEnum() {
        List<SeniorFixedGroupEnum> list = new ArrayList<>();
        for (SeniorFixedGroupEnum cache : values()) {
            list.add(cache);
        }
        return list;
    }

    /***
     *
     * 判断是否是当前、上级
     * @return
     */
    public static boolean isNowPreGroup(Long id) {
        for (SeniorFixedGroupEnum cache : values()) {
            if(Objects.equals(cache.getId(),id)){
                return true;
            }
        }
        return false;
    }
    public String getLabel() {
        return I18nMessageUtil.getMessage(label);
    }
}
